using System;
using System.Collections.Generic;
using System.Xml;
using System.Collections.ObjectModel;

namespace planning
{
	public class Jour : ObservableObject
	{
		// ----- ATTRIBUTS -----
		private NomJour nom;
		private ICollection<Enseignement> enseignements = new ObservableCollection<Enseignement>();

		// ----- CONSTRUCTEURS -----
		public Jour()
		{
			// Start of user code for default constructor
			// End of user code for default constructor
		}

		// ----- ACCESSEURS -----
		public NomJour Nom
		{
			get { return nom; }
			set { nom = value; ObjectChanged("nom"); }
		}

		public ICollection<Enseignement> Enseignements
		{
			get { return enseignements; }
			set { enseignements = value; ObjectChanged("enseignements"); }
		}


		static Dictionary<string, Jour> references = new Dictionary<string, Jour>();

		public static Jour fromXml(XmlNode node)
		{
			if(node.SelectSingleNode("@ref") != null)
				return references[node.SelectSingleNode("@ref").Value];

			Jour jour = new Jour();

			if(node.SelectSingleNode("@id") != null) {
				references.Add(node.SelectSingleNode("@id").Value, jour);
			}

			jour.Nom = (NomJour) Enum.Parse(typeof(NomJour), node.SelectSingleNode("@nom").Value);
			foreach (XmlNode subElement in node.SelectNodes("enseignements/*"))
			{
				Enseignement subObject = Enseignement.fromXml(subElement);
				jour.enseignements.Add(subObject);
			}

			

			return jour;

		}

	}

}
